In recent years, intelligent network interface devices have evolved from customized, mostly hardware-implemented devices to highly programmable network processors capable of multi-threaded, parallel data processing. Some network processors use internal multi-threaded processing elements (“microengines”) designed to handle packet-level processing typically associated with layer 3 protocol-based processing, while other network processors use different internal multi-threaded processing elements (“network processing engines”) to handle processing functions typically associated with the physical and data link layer protocols. These two types of processing elements have significantly different performance capabilities.